from mcp.server.fastmcp import FastMCP

from a0base.base_llm import logger
from a2weather_mcp.a1_weather_service import CityWeatherServer

# 初始化 MCP 服务器-并指定端口
mcp = FastMCP("CityWeatherServer", host="0.0.0.0", port=8000)
# 初始化城市信息服务器
city_server = CityWeatherServer()


# 获取天气信息的工具
@mcp.tool()
async def get_city_weather(city: str) -> str:
    """获取指定城市的天气信息。

    参数:
    city (str): 城市名称

    返回:
    str: 天气信息描述
    """
    city_weather_info = await city_server.get_city_weather(city)
    return city_weather_info


@mcp.tool()
# 获取所有城市列表
async def get_city_list():
    """获取所有城市列表。
    返回:
    str: 所有城市列表
    """
    city_list = await city_server.get_city_list()
    return city_list


@mcp.tool()
# 获取指定城市的信息
async def get_city_detail(city: str):
    """获取指定城市的信息。

    参数:
    city (str): 城市名称

    返回:
    str: 指定城市的信息
    """
    city_info = await city_server.get_city_detail(city)
    return city_info


# 主程序
if __name__ == "__main__":
    logger.info("运行MCP客户端，使用Server-Sent Events(SSE)作为传输协议->天气服务器监听 http://0.0.0.0:8000/sse")
    mcp.run(transport="sse")
